/**
 * https://leetcode-cn.com/problems/plus-one/
 * 把数组的每项连起来看作一个整数, 在这个整数的基础上加1
 * @param digits 
 */
const plusOne = (digits: number[]): number[] => {
    let p = digits.length - 1,
        plus = 1; // 默认为1

    // 存在进位
    for (let i = p; i >= 0; i--) {
        let item = digits[i] + plus

        // 重新计算进位
        plus = item >= 10 ? 1 : 0

        item = plus ? item - 10 : item
        
        // 更新该值
        digits[i] = item

        // 没有进位, 直接结束
        if (plus === 0) return digits
    }

    // 进位存在
    if (plus === 1) {
        // 往前插入1
        digits.unshift(1)
    }

    return digits
};